package com.wanqing.dto;

import com.wanqing.entity.VoucherRule;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 优惠券DTO（数据传输对象）
 * 用于接收前端创建/更新优惠券的参数
 */
@Data
public class VoucherDTO {

    /**
     * 优惠券ID
     */
    private Long id;

    /**
     * 优惠券标题（如：50元秒杀券、满200减50）
     */
    @NotBlank(message = "标题不能为空")
    private String title;

    /**
     * 副标题（如：限家电品类）
     */
    private String subTitle;

    /**
     * 类型：0-普通券；1-秒杀券
     */
    @NotNull(message = "类型不能为空")
    private Byte type;

    /**
     * 状态：1-上架；2-下架
     */
    private Byte status;

    /**
     * 总库存：0-无限；>0-有限库存
     */
    private Integer stock;

    /**
     * 通用有效期开始时间
     */
    @NotNull(message = "有效期开始时间不能为空")
    private LocalDateTime validStartTime;

    /**
     * 通用有效期结束时间
     */
    @NotNull(message = "有效期结束时间不能为空")
    private LocalDateTime validEndTime;

    /**
     * 秒杀开始时间（仅type=1时有效）
     */
    private LocalDateTime seckillStartTime;

    /**
     * 秒杀结束时间（仅type=1时有效）
     */
    private LocalDateTime seckillEndTime;

    // 优惠券规则
    @Valid  // 关键点：触发嵌套对象的校验
    private VoucherRule voucherRule;
}
